package br.com.cast.produto.pagina;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.spring.injection.annot.SpringBean;

import br.com.cast.modelo.Produto;
import br.com.cast.produto.HomePage;
import br.com.cast.servico.IProdutoServico;
import br.com.cast.util.ComponentUtil;

public class ListarProduto extends Panel {
	
	
	@SpringBean
	private IProdutoServico produtoServico;
	
    private IncluirProduto incluirProduto;
	

	public ListarProduto(String id) {
		super(id);
		setOutputMarkupId(true);
		
		incluirProduto = new IncluirProduto(HomePage.CONTENT_ID);
		
		
		DataView<Produto> viewProduto = new DataView<Produto>("viewProduto" , produtoServico) {

			@Override
			protected void populateItem(final Item<Produto> item) {
				
				final Produto p = item.getModelObject();
				 
				 item.add(new Label("descricao"));
				 item.add(new Label("valor", "RS: " + p.getValor()));
				 
				 item.add(new Link<Produto>("alterar") {

					
					public void onClick() {
						
						incluirProduto.atualizarFormulario(p);
						HomePage homepage = ComponentUtil.getTemplate(this);
						homepage.replace(incluirProduto);
						
						
					}

					
					 
				});
				 
				 item.add(new AjaxLink<Produto>("remover") {
		
						public void onClick(AjaxRequestTarget target) {
							
							produtoServico.excluir(p);
							HomePage template = ComponentUtil.getTemplate(this);
							template.success("Registro excluído com sucesso!");
							
							target.add(template.get("msgErro"));
							target.add(template.get("msgSucesso"));
							target.add(template.get(HomePage.CONTENT_ID));	
						     
							
						}
						 
					});
				 				
				
			}
		};
		
		viewProduto.setItemsPerPage(4);
		add(viewProduto);
		add(new PagingNavigator("pagingNavigator", viewProduto));
		
		 
		
		 
	}

}
